// const arr = [1, 2, 3, 4, 5, 5, 4, 3, 3, 3, 2, 1, 2]
// let num = 0
// arr.forEach(item => {
//     num = num ^ item
// })
// // 异或运算 求一个数组中出现次数为奇数的数
// console.log(num)
 

const arr = [1, 2, 3, 4, 5, 5, 4, 3, 3, 3, 2, 1, 2, 9]
let num = 0
let num1 = 0 
arr.forEach(item => {
    num = num ^ item 
})

// ! 重点是下面这一行
let rightOne = num & (!num + 1) // 提取最右侧的 1
arr.forEach(item => {
    if((item & rightOne) == 1) {
        num1  = num1 ^ item
    }
})
// 异或运算  求出数组中两个出现次数为奇数的数
console.log(num1, (num1 ^ num))


